package com.majie.algorithm.sort;


import com.majie.common.SwapUtils;

/**
 * 冒泡排序
 * <p>
 * 基本思想：
 * 在要排序的一组数中，对当前还未排好序的范围内的全部数，自上而下对相邻的两个数依次进行比较和调整，让较大的数往下沉，较小的往上冒。
 * 即：每当两相邻的数比较后发现它们的排序与排序要求相反时，就将它们互换。
 * <p>
 * 时间复杂度O(n^2)
 *
 * @author majie
 * @date 2018/5/8.
 */
public class BubbleSort {


    private static void sort(int[] arr, int left, int right) {
        for (int i = left; i < right; i++) {
            //每次都要从头开始比较
            for (int j = left; j < right - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    SwapUtils.swap(arr, j, j + 1);
                }
            }
        }
    }


    /**
     * 测试
     *
     * @param args
     */
    public static void main(String[] args) {
        int[] arr = {10, 654, 8, 3, 6, 5, 9, 4, 34, 1};
        sort(arr, 0, arr.length - 1);
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }

}
